﻿using System;
using System.Collections.Generic;

namespace SocialFront.Providers.Image
{
    [SectionName("SocialFrontImage")]
    public abstract class ImageBase : SocialFrontProviderBase
    {
        // Data Management
        public abstract Entities.Image CreateImage(Entities.Image image);
        public abstract Entities.Image UpdateImage(Entities.Image image);
        public abstract int DeleteImage(int id);
        public abstract int DeleteImage(Entities.Image image);
        // Data Request
        public abstract Entities.Image GetImageById(int id);
        public abstract System.Xml.XPath.XPathNodeIterator GetImageXmlById(int id);
        public abstract List<Entities.Image> GetAllImages();
        public abstract List<Entities.Image> GetAllImages<T>(Func<Entities.Image, T> sortField);
        public abstract List<Entities.Image> GetAllImages<T>(int? pageSize, Func<Entities.Image, T> sortField);
        public abstract List<Entities.Image> GetAllImages<T>(int? pageSize, int? page, Func<Entities.Image, T> sortField);
        public abstract List<Entities.Image> GetAllImages<T>(int? pageSize, int? page, out int total, Func<Entities.Image, T> sortField);


        public abstract List<Entities.Image> GetImagesByMember(int id);
        public abstract List<Entities.Image> GetImagesByMember(Entities.Member member);
        public abstract List<Entities.Image> GetImagesByMember(int id, int? pageSize, int page);
        public abstract List<Entities.Image> GetImagesByMember(Entities.Member member, int? pageSize, int page);
        public abstract List<Entities.Image> GetImagesByMember(int id, int? pageSize, int page, out int total);
        public abstract List<Entities.Image> GetImagesByMember(Entities.Member member, int? pageSize, int page, out int total);

        public abstract string GetMemberImageUrl(int memberId);
        public abstract string GetMemberImageUrl(Entities.Member member);
    }
}